package edu.ustb.efws.base.mapper;

import edu.ustb.efws.base.domain.Detector;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 设备信息数据操作
 *
 * @author TS Group
 */
@Mapper
public interface DetectorMapper {

    /**
     * 新增设备
     *
     * @param t {@link Detector}
     * @return 新增条数
     */
    int insert(Detector t);

    /**
     * 修改设备
     *
     * @param t {@link Detector}
     * @return 修改条数
     */
    int update(Detector t);

    /**
     * 删除设备
     *
     * @param id 设备编号
     * @return 删除条数
     */
    int delete(@Param("id")int id);

    /**
     * 通过设备编号获取设备信息
     *
     * @param id 设备编号
     * @return {@link Detector}
     */
    Detector findOne(@Param("id") int id);

    /**
     * 通过名称获取表名
     *
     * @param description 名称
     * @return 表名
     */
    String findTableNameByDescription(@Param("description") String description);

    /**
     * 通过设备类型查询设备
     *
     * @param detectorType 设备类型
     * @return {@link Detector}
     */
    List<Detector> findByType(@Param("detectorType")String detectorType);

    /**
     * 查询所以设备
     *
     * @return 设备集合
     */
    List<Detector> findAll();

    /**
     * 查询设备记录数
     *
     * @param detectorType 设备类型
     * @param description 设备名称
     * @return 记录数
     */
    long count(@Param("detectorType")String detectorType, @Param("description")String description);

    /**
     * 查询设备记录
     *
     * @param detectorType 设备类型
     * @param description 设备名称
     * @param offset 查询偏移量
     * @param limit 查询记录数
     * @return 记录集合
     */
    List<Detector> find(@Param("detectorType")String detectorType, @Param("description")String description,
                        @Param("offset")int offset, @Param("limit")int limit);
}